package com.goldman.aplt.base.core.type;

import lombok.*;

import java.math.BigDecimal;

public interface ComCoreAcct {

    @Getter
    @Setter
    @ToString
    @AllArgsConstructor
    @NoArgsConstructor
    @Builder
    public class AcctInfo {

        private String clientNo;

        private String prodType;

        private String baseAcctNo;

        private String acctSeqNo;

        private String acctStatus;

        private String acctName;

        private String acctOpenDate;

        private String maturityDate;

        private BigDecimal ledgerBal;

        private BigDecimal actualBal;

        private BigDecimal realRate;

        private String documentId;

        private String frezeType;

        private String frezeSeq;

        private String classLevel;
        //两位等级
        private String level;

        private String coreDate;

        //当前账户的余额限制金额
        private BigDecimal balLimit;

        //当前账户的单日已转出金额
        private BigDecimal dailyUsedOutLimit;

        //当前账户的单日转出限额
        private BigDecimal dailyOutLimit;

        //该笔转账是否超过单笔入账金限制
        private boolean isOverSingleInwardLimit;

        //该笔转账是否超过单日出账金限制
        private boolean isOverDailyOutwardLimit;

        //该笔转账是否需要延迟处理
        private boolean isDelayProcess;
    }

    @Data
    @NoArgsConstructor
    public class AcctIntQuery {

        private String clientNo;

        private String prodType;

        private String baseAcctNo;

        private String acctSeqNo;

        private String acctCcy;

        private String ccy;

        private String startDate;

        private String endDate;
    }

    @Data
    @Builder
    @AllArgsConstructor
    @NoArgsConstructor
    public class InterestOut {
        /**
         * 当前应计利息
         */
        private String accrualInst = "0";
        /**
         * 累计已付利息
         */
        private String pastInterest = "0";

        /**
         * 上日应计利息
         */
        private String lastAccrualInst = "0";
        /**
         * 总计利息税
         */
        private String totalInstTax = "0";
        /**
         * 上日计提日期
         */
        private String lastAccrualDate = "0";
    }
}
